package com.zhuang.jdk8.lambda;

import java.util.HashMap;
import java.util.Map;
import java.util.function.Consumer;

public class DemoConsumer {
    public static void main(String[] args) {
        // 使用Lambda表达式将一个字符串转成小写和大写的字符串
        print((String str) -> {
            System.out.println(str.toLowerCase());
        }, (String str) -> {
            System.out.println(str.toUpperCase());
        });

        printMap((HashMap<Integer, String> integerStringHashMap)
                        -> integerStringHashMap.put(99, "123"),
                (HashMap<Integer, String> integerStringHashMap)
                        -> integerStringHashMap.put(98, "456"));
    }

    // 消费一个数据，其数据类型由泛型参数决定
    // 通过Consumer接口，可以拿到accept方法参数传递过来的数据进行处理，有参无返回的接口
    // andThen方法同时运行两个accept方法
    public static void print(Consumer<String> c1, Consumer<String> c2) {
        String str = "zhuangkang";
        c1.accept(str);
        c2.accept(str);
        // c1.andThen(c2).accept(str);
    }

    public static void printMap(Consumer<HashMap<Integer, String>> m1, Consumer<HashMap<Integer, String>> m2) {
        HashMap<Integer, String> map1 = new HashMap<>();
        map1.put(1, "one1");
        map1.put(2, "one2");
        map1.put(3, "one3");
        map1.put(4, "one4");
        m1.andThen(m2).accept(map1);
        for (Map.Entry<Integer, String> entry : map1.entrySet()) {
            System.out.println(entry.getKey() + ":" + entry.getValue());
        }
    }
}
